package com.hangwei.aicabinet.manager;

import android.support.annotation.NonNull;

import com.hangwei.aicabinet.util.InstructionsUtil;

import java.util.HashMap;

/**
 * Created by 张龙臣 on 2018/9/15.
 * <p>
 * 注：经测试，在别的程序打开串口的情况下，此串口的指令响应会受到影响
 */

public class SerialPortProxy {

    public static HashMap<String, String> getAllTab() {
        return SerialPortManager.allTabFromRead;
    }

    /**
     * 打开串口
     */
    public static boolean openTabDevice(@NonNull SerialPortManager.ReturnHandleCallBack callBack) {
        return SerialPortManager.openDevice(callBack);
    }

    /**
     * 读写器在线检测
     */
    public static void testOnLine() {
        SerialPortManager.testOnLine();
    }

    /**
     * 场景检测
     */
    public static void getType() {
        SerialPortManager.getType();
    }

//    /**
//     * 设置功率
//     */
//    public static void setPower() {
//        SerialPortManager.setPower();
//    }

    /**
     * 获取天线
     */
    public static void getAntenna() {
        SerialPortManager.getAntenna();
    }

    /**
     * 设置天线
     */
    public static void setAntenna(String antenna) {
        SerialPortManager.setAntenna(antenna);
    }

    public static void setAntennaAll(){
        SerialPortManager.setAntennaAll();
    }

    /**
     * 设置天线
     *
     * @param mobileCabinet  是否是移动柜
     * @param which 指定柜门
     */
    public static void setAntenna(boolean mobileCabinet, int which) {
        String antenna;
        if (mobileCabinet)
            antenna = InstructionsUtil.buildSetAntennaOrderMove(which);
        else antenna = InstructionsUtil.buildSetAntennaOrder(which);
        SerialPortManager.setAntenna(antenna);
    }

    /**
     * 轮询读取标签
     */
    public static void readCard() {
        SerialPortManager.readCard();
    }

    /**
     * 从缓存中读取数据
     */
    public static void fromCache() {
        SerialPortManager.fromCache();
    }

    /**
     * 关闭串口
     */
    public static void closeTabSerialPort() {
        SerialPortManager.closeSerialPort();
    }

    /**
     * 打开锁串口
     */
    public static boolean openLockDevice(@NonNull SerialPortManager.ReturnHandleCallBack callBack) {
        return LockManager.openDevice(callBack);
    }

    /**
     * 打开指定的锁
     */
    public static void openLock(int which) {
        LockManager.openLock(which);
    }

    /**
     * 开锁之后执行的关锁（断电）操作
     */
    public static void closeLock() {
        LockManager.closeLock();
    }

    /**
     * 监听锁（门）的开关状态
     */
    public static void loopLockStatus() {
        LockManager.loopLockStatus();
    }

    /**
     * 停止监听锁（门）开关状态
     */
    public static void stopLoopLock() {
        LockManager.stopLoop();
    }

    /**
     * 关闭串口
     */
    public static void closeLockSerialPort() {
        LockManager.closeSerialPort();
    }

}
